Device Details
Overview
Name | Version: | Kasm LFO 1.14 |
Author: | kevleyski |
Device Type: | MIDI Effect |
Description: | Algorithmic LFOs with Ableton Live mappings and MIDI CC! This is a demonstration of the Kasm Rust SDK continuous control data generated inside of Ableton Live, the algorithm can be of any complexity LFO input can also be diven by note pattern triggers, encoder movement behaviour and so on, with Kasm you can make your own live performance LFOs that change direction or holds on certain notes or knob twiddles for example Go edit your own bonkers algorithms in Rust code here make it do anything: https://pyrmontbrewery.com/get_kasm m Testers of this device get A$15 off, in Ableton click the "Kasm Rust" title as shown the image above to get the current coupon code - if you can leave a comment here that's wonderful, but no worries mate Students get a 30% discount, use KASMSTU at the checkout !! NOTE: you need the latest Ableton 12.2 for this as it uses the new V8 jsinterp from Max9 !! But... if you don't have Max4Live or have an older Ableton Live version no worries - Kasm is WebAssembly so it also runs on a regular web browsers too! You can interface with Ableton via WebMIDI instead, this way you can develop and test with Kasm SDK in Chrome/Firefox, try it out here: https://pyrmontbrewery.com/kasm For those interested, this is what the LFO Rust code (Ableton Live and Web version uses identical WebAssembly)... pub fn kasm_lfo_logarithmic( _note: i32, cc_number: i32, _velocity: i32, enc1: i32, enc2: i32, _step: i32, _bar: i32, ) -> i32 { let now = crate::get_current_time_ms(); let mut last_time = LAST_LFO_TIME.write().unwrap(); let mut phase = LFO_PHASE.write().unwrap(); // Calculate time delta in milliseconds let delta_ms = if *last_time == 0 { *last_time = now; 0.0 } else { let delta = now.saturating_sub(*last_time) as f32; *last_time = now; delta }; // Calculate phase increment based on speed and tempo/bar length let phase_increment = lfo_phase_increment(delta_ms, enc1); // Accumulate phase (0..1 range) *phase = (*phase + phase_increment).fract(); // enc2 controls logarithmic scaling let log_scale = 1.0 + (enc2 as f32 / 127.0) * 9.0; // Calculate logarithmic function let log_input = 1.0 + *phase * (log_scale - 1.0); let log_value = log_input.ln() / log_scale.ln(); let lfo_value = (log_value * 127.0) as i32; send_cc(cc_number, lfo_value.max(0).min(127), 0); cc_number } |
Details
Live Version Used: | 12.2 |
Max Version Used: | 9.0 |
Date Added: | Aug 04 2025 09:11:01 |
Date Last Updated: | Aug 15 2025 05:12:02 |
Downloads: | 73 |
ⓘ License: | None |
Average Rating
Log in to rate this device |
-n/a- |
Files
Device File: | Kasm LFO.amxd |
Login to comment on this device.
Browse the full library